﻿///
/// \file CLibrary.h
/// \brief 模拟QLibrary功能
///
/// \author 李荣业
/// \version V1.0
/// \date 2018.09.03
///

#ifndef CLIBRARY_H
#define CLIBRARY_H

#include <string>
#include "shared_export.h"

///
/// \brief 接口用法和 QLibrary 非常类似，可以参考 QLibrary 的帮助文档
///
class comlibSHARED_EXPORT CLibrary
{
public:
    CLibrary(const std::string & fileName);
    ~CLibrary();

    ///
    /// \brief resolve 获取函数符号的入口地址
    /// \param symbol 函数名
    /// \return 函数入口地址
    ///
    void * resolve(const char * symbol);

    ///
    /// \brief load 加载动态库
    /// \return 调用结果
    ///
    bool load();

    bool isLoaded() const; ///< 返回是否加载成功的状态

    void setFileName(const std::string & fileName); ///< 设置库文件名
    std::string fileName() const;                   ///< 获取库文件名

private:
    Q_DISABLE_COPY(CLibrary)
    std::string fileName_;
    bool isLoad_;
    void * lib_;
};

#endif // CLIBRARY_H
